#include <iostream>
#include <cstring>
using namespace std;
using ll=long long;
const int N=2*1e5+10;


ll s[N];
int h[N*2],to[N*2],ne[N*2],idx;

void add(int x,int y)
{
	to[idx]=y;
	ne[idx]=h[x];
	h[x]=idx++;
}
void pushup(int son)
{
	for(int i=h[son];~i;i=ne[i])
	{
		int j=to[i];
		s[j]+=s[son];
		pushup(j);
	}
}
int main()
{
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&s[i]);
	}
	for(int i=1;i<n;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		add(y,x);
	}
	for(int i=n;i>=1;i++)
	{
		pushup(i);
	}
	return 0;
}
